package com.swn.cm.controller;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;

import com.swn.cm.service.EmpService;
import com.swn.common.util.DateUtil;
import com.swn.common.util.IID;
import com.swn.common.util.JSONUtil;

/**
 * 员工管理的类
 * 
 * @author 张泽薇
 * @Date 2017年6月30日  上午9:37:06
 * @Note <这里是该类的使用注意事项>
 * 修改日期  修改人  修改内容
 * <多次修改需另起一行>
 * @company 济南舒卫能生物技术有限公司
 */

@Controller
@RequestMapping("/empmanage")
public class EmpController {
	private static Logger logger = Logger.getLogger("EmpController.class");
	@Autowired
	private EmpService EmpService;
	
	/**
	 * 查询员工
	 * 
	 * @return Map<String,Object>
	 *
	 * @Author 张泽薇
	 * @Date 2017年7月4日 下午2:58:41 
	 * @Note <这里是方法的备注>
	 * 修改日期  修改人  修改内容
	 */
	@RequestMapping(value = "/queryEmpList")
	@ResponseBody
	public Map<String, Object> queryEmpList(){
		Map<String, Object> map = new HashMap<String, Object>();
		try {
			List<Map<String,Object>> list = EmpService.queryMapList();
			map.put("data", list);
		} catch (Exception e) {
			logger.error(e);
		}
		return map;
	}
	
	/**
	 * 添加员工
	 * 
	 * @param signupForm
	 * @return String
	 *
	 * @Author 张泽薇
	 * @Date 2017年7月4日 下午2:58:56 
	 * @Note <这里是方法的备注>
	 * 修改日期  修改人  修改内容
	 */
	@RequestMapping(value = "/addEmp" , method = RequestMethod.POST)
	@ResponseBody
	public String addEmp(String signupForm){
		String result = "fail";
		try {
			@SuppressWarnings("unchecked")
			Map<String,Object> paramMap = JSONUtil.getMapFromJsonString(signupForm);
			String loginname = "";
			loginname=(String)paramMap.get("login_user");
			String tel=(String)paramMap.get("emp_tel");
			Map<String,Object> columnMap=new HashMap<String,Object>();
			columnMap.put("login_user", loginname);
			columnMap.put("emp_tel", tel);
			
			List<Map<String, Object>> queryEmpListByColumn = null;
			queryEmpListByColumn = EmpService.queryEmpListByColumn(columnMap);
			if(queryEmpListByColumn.isEmpty()){
				String id=IID.getIID();
				paramMap.put("id", id);
				String dateAndTime = DateUtil.getDateAndTime();
				paramMap.put("create_time", dateAndTime);
				int execute = EmpService.saveEmp(paramMap);
				if (execute > 0){
					result = "success";
				}
			}else{
				if(loginname.equals(queryEmpListByColumn.get(0).get("login_user"))){
					result="login_user_repeat";
				}else{
					result="tel_repeat";
				}
			}
		} catch (Exception e) {
			logger.error(e);
		}
		return result;
	}
	
	/**
	 * 根据id查询员工
	 * 
	 * @param id
	 * @return Map<String,Object>
	 *
	 * @Author 张泽薇
	 * @Date 2017年7月4日 下午2:59:09 
	 * @Note <这里是方法的备注>
	 * 修改日期  修改人  修改内容
	 */
	@RequestMapping(value = "/queryEmpById", method = RequestMethod.POST)
	@ResponseBody
	public Map<String, Object> queryEmpById(String id) {
		Map<String, Object> map=null;
		try {
			map = EmpService.queryEmpMapById(id);
		} catch (Exception e) {
			logger.error(e);
		}
		return map;
	}
	
	/**
	 * 更新员工信息
	 * 
	 * @param signupForm
	 * @param id
	 * @return String
	 *
	 * @Author 张泽薇
	 * @Date 2017年7月4日 下午2:59:29 
	 * @Note <这里是方法的备注>
	 * 修改日期  修改人  修改内容
	 */
	@RequestMapping(value = "/updateEmp", method = RequestMethod.POST)
	@ResponseBody
	public String updateEmp(String signupForm,String id) {
		String result = "";
		try {
			@SuppressWarnings("unchecked")
			Map<String,Object> paramMap = JSONUtil.getMapFromJsonString(signupForm);
			paramMap.put("id", id);
			int execute = EmpService.updateEmp(paramMap);
			if (execute > 0){
				result = "success";
			}else{
				result = "fail";
			}
		} catch (Exception e) {
			logger.error(e);
		}
		return result;
	}
	
	/**
	 * 删除员工
	 * 
	 * @param id
	 * @return String
	 *
	 * @Author 张泽薇
	 * @Date 2017年7月4日 下午2:59:42 
	 * @Note <这里是方法的备注>
	 * 修改日期  修改人  修改内容
	 */
	@RequestMapping(value = "/deleteEmp")
	@ResponseBody
	public String deleteEmp(String id) {
		String result = "";
		try {
			int execute = EmpService.deleteEmp(id);
			if (execute > 0){
				result = "success";
			}else{
				result = "fail";
			}
		} catch (Exception e) {
			logger.error(e);
		}
		return result;
	}
	
	/**
	 * 添加团队
	 * 
	 * @param signupForm
	 * @return String
	 *
	 * @Author 张泽薇
	 * @Date 2017年7月4日 下午2:59:57 
	 * @Note <这里是方法的备注>
	 * 修改日期  修改人  修改内容
	 */
	@RequestMapping(value = "/addDept" , method = RequestMethod.POST)
	@ResponseBody
	public String addDept(String signupForm){
		String result = "fail";
		try {
			String id=IID.getIID();
			@SuppressWarnings("unchecked")
			Map<String,Object> paramMap = JSONUtil.getMapFromJsonString(signupForm);
			paramMap.put("id", id);
			int execute = EmpService.saveDept(paramMap);
			if (execute > 0){
				result = "success";
			}else{
				result = "fail";
			}
		} catch (Exception e) {
			logger.error(e);
		}
		return result;
	}
	
	/**
	 * 查询所有团队
	 * 
	 * @return Map<String,Object>
	 *
	 * @Author 张泽薇
	 * @Date 2017年7月4日 下午3:00:15 
	 * @Note <这里是方法的备注>
	 * 修改日期  修改人  修改内容
	 */
	@RequestMapping(value = "/queryDeptList")
	@ResponseBody
	public Map<String, Object> queryDeptList(){
		Map<String, Object> map = new HashMap<String, Object>();
		try {
			List<Map<String,Object>> list = EmpService.queryDeptMapList();
			map.put("data", list);
		} catch (Exception e) {
			logger.error(e);
		}
		return map;
	}
	
	/**
	 * 根据id查询一个团队信息
	 * 
	 * @param id
	 * @return Map<String,Object>
	 *
	 * @Author 张泽薇
	 * @Date 2017年7月4日 下午3:00:28 
	 * @Note <这里是方法的备注>
	 * 修改日期  修改人  修改内容
	 */
	@RequestMapping(value = "/queryDeptById", method = RequestMethod.POST)
	@ResponseBody
	public Map<String, Object> queryDeptById(String id) {
		Map<String, Object> map=null;
		try {
			map = EmpService.queryDeptById(id);
		} catch (Exception e) {
			logger.error(e);
		}
		return map;
	}
}
